#pragma once

#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include <stdbool.h>

typedef int QueueDataType;

typedef struct QueNode
{
	QueueDataType val;
	struct QueNode* next;
}QueNode;

typedef struct Queue
{
	QueNode* head;
	QueNode* tail;
	int size;
}Queue;

void QueInit(Queue* phead);
//Queue* QueInit();

void QuePush(Queue* phead, QueueDataType x);
void QuePop(Queue* phead);

int QueSize(Queue* phead);
bool QueEmpty(Queue* phead);
QueueDataType QueFront(Queue* phead);
QueueDataType QueBack(Queue* phead);

void QueDestroy(Queue* phead);